package util

import "reflect"

type Response struct {
	Success      bool        `json:"success"`
	Data         interface{} `json:"data,omitempty"`
	ErrorMessage string      `json:"errorMessage,omitempty"`
	Total        int         `json:"total,omitempty"`
}

// ErrorResponse 创建错误响应
func ErrorResponse(errorMessage string) Response {
	return Response{
		ErrorMessage: errorMessage,
	}
}

// SuccessResponse 创建成功响应
func SuccessResponse(data interface{}) Response {
	if data != nil {
		switch reflect.TypeOf(data).Kind() {
		// 如果是集合类型数据 获取数据长度
		case reflect.Array, reflect.Slice:
			arr := reflect.ValueOf(data)
			return Response{
				Success: true,
				Data:    data,
				Total:   arr.Len(),
			}
		}
	}
	return Response{
		Success: true,
		Data:    data,
	}
}
